home *** CD-ROM | disk | FTP | other *** search
/ Workbench Design / WB Collection.iso / datatypes / debox_dt / source / asmsupport.asm next >
Assembly Source File  |  1996-04-07  |  7KB  |  373 lines

  1.  
  2. ******************************************************************************
  3. *
  4. * Flowerpower's DeBox Datatype
  5. *
  6. * Written by Christian Buchner and David N. Junod
  7. *
  8. ******************************************************************************
  9. * AsmSupport.asm
  10. *
  11.  
  12.         SECTION    Code,CODE
  13.  
  14.  
  15. * _XOR_Memory ****************************************************************
  16.  
  17.         XDEF    _XOR_Memory
  18.  
  19. _XOR_Memory    MOVEQ    #12,D1
  20.         CMP.L    D1,D0
  21.         BCS.S    lbC000930
  22.         MOVE.L    A0,D1
  23.         BTST    #0,D1
  24.         BEQ.S    lbC0008EC
  25.         MOVE.B    (A1)+,D1
  26.         EOR.B    D1,(A0)+
  27.         SUBQ.L    #1,D0
  28. lbC0008EC    MOVE.L    A1,D1
  29.         BTST    #0,D1
  30.         BNE.S    lbC000930
  31.         MOVE.L    D0,D1
  32.         ANDI.W    #3,D1
  33.         MOVE.W    D1,-(SP)
  34.         MOVEM.L    D2-D7,-(SP)
  35.         MOVEQ    #$18,D1
  36.         BRA.S    lbC000916
  37. lbC000904    MOVEM.L    (A1)+,D2-D7
  38.         EOR.L    D2,(A0)+
  39.         EOR.L    D3,(A0)+
  40.         EOR.L    D4,(A0)+
  41.         EOR.L    D5,(A0)+
  42.         EOR.L    D6,(A0)+
  43.         EOR.L    D7,(A0)+
  44.         SUB.L    D1,D0
  45. lbC000916    CMP.L    D1,D0
  46.         BCC.S    lbC000904
  47.         MOVEM.L    (SP)+,D2-D7
  48.         LSR.L    #2,D0
  49.         BEQ.S    lbC00092A
  50. lbC000922    MOVE.L    (A1)+,D1
  51.         EOR.L    D1,(A0)+
  52.         SUBQ.L    #1,D0
  53.         BNE.S    lbC000922
  54. lbC00092A    MOVE.W    (SP)+,D0
  55.         BEQ.S    lbC00093C
  56.         BRA.S    lbC000934
  57. lbC000930    TST.L    D0
  58.         BEQ.S    lbC00093C
  59. lbC000934    MOVE.B    (A1)+,D1
  60.         EOR.B    D1,(A0)+
  61.         SUBQ.L    #1,D0
  62.         BNE.S    lbC000934
  63. lbC00093C    RTS
  64.  
  65.  
  66. * _Method_1 ******************************************************************
  67.  
  68.         XDEF    _Method_1
  69.  
  70. lbC0005CC    SUBQ.L    #1,D7
  71.         BLT.S    lbC0005E2
  72.         ADDQ.L    #1,D5
  73.         CMP.L    D6,D5
  74.         BGT.S    lbC0005E6
  75.         MOVE.B    (A1)+,(A3)+
  76.         CMPI.B    #7,D4
  77.         BEQ.S    lbC0005F0
  78.         ADDQ.B    #1,D4
  79.         BRA.S    lbC0005FA
  80. lbC0005E2    BRA.W    lbC000666
  81. lbC0005E6    BRA.W    lbC0005E6
  82.  
  83. _Method_1    MOVEM.L    D2-D7/A0-A4,-(SP)
  84.         MOVEQ    #0,D5
  85. lbC0005F0    SUBQ.L    #1,D7
  86.         BLT.W    lbC000666
  87.         MOVEQ    #0,D4
  88.         MOVE.B    (A1)+,D3
  89. lbC0005FA    BTST    D4,D3
  90.         BNE.S    lbC0005CC
  91.         SUBQ.L    #2,D7
  92.         BLT.S    lbC000666
  93.         MOVEQ    #0,D0
  94.         MOVEQ    #0,D2
  95.         MOVE.B    (A1)+,D0
  96.         MOVE.B    (A1)+,D2
  97.         MOVE.L    D2,D1
  98.         ANDI.B    #15,D1
  99.         ADDQ.W    #3,D1
  100.         ASL.W    #4,D2
  101.         CLR.B    D2
  102.         ADD.W    D2,D0
  103.         CMP.L    D0,D5
  104.         BLT.S    lbC000662
  105.         NEG.W    D0
  106.         LEA    0(A3,D0.W),A4
  107.         ADD.L    D1,D5
  108.         CMP.L    D6,D5
  109.         BGT.S    lbC000662
  110.         ADD.L    D1,D1
  111.         NEG.L    D1
  112.         ; Seems the SAS-C assembler has got a bug
  113. ***        JMP    lbC000654(PC,D1.W)
  114.         ; using DC.W instead
  115.         DC.W    $4EFB,$1026
  116.         MOVE.B    (A4)+,(A3)+
  117.         MOVE.B    (A4)+,(A3)+
  118.         MOVE.B    (A4)+,(A3)+
  119.         MOVE.B    (A4)+,(A3)+
  120.         MOVE.B    (A4)+,(A3)+
  121.         MOVE.B    (A4)+,(A3)+
  122.         MOVE.B    (A4)+,(A3)+
  123.         MOVE.B    (A4)+,(A3)+
  124.         MOVE.B    (A4)+,(A3)+
  125.         MOVE.B    (A4)+,(A3)+
  126.         MOVE.B    (A4)+,(A3)+
  127.         MOVE.B    (A4)+,(A3)+
  128.         MOVE.B    (A4)+,(A3)+
  129.         MOVE.B    (A4)+,(A3)+
  130.         MOVE.B    (A4)+,(A3)+
  131.         MOVE.B    (A4)+,(A3)+
  132.         MOVE.B    (A4)+,(A3)+
  133.         MOVE.B    (A4)+,(A3)+
  134. lbC000654    CMP.L    D6,D5
  135.         BEQ.S    lbC000666
  136.         CMPI.B    #7,D4
  137.         BEQ.S    lbC0005F0
  138.         ADDQ.B    #1,D4
  139.         BRA.S    lbC0005FA
  140. lbC000662    MOVEQ    #0,D0
  141.         BRA.S    lbC00066C
  142. lbC000666    CMP.L    D5,D6
  143.         BNE.S    lbC000662
  144.         MOVE.L    D5,D0
  145. lbC00066C    MOVEM.L    (SP)+,D2-D7/A0-A4
  146.         RTS
  147.  
  148.  
  149. * _Method_2 ******************************************************************
  150.  
  151.         XDEF    _Method_2
  152.  
  153. _Method_2    MOVEM.L    D2-D7/A0-A5,-(SP)
  154.         SUBQ.L    #2,D7
  155.         BLT.W    lbC00071A
  156.         MOVE.W    (A1)+,D5
  157.         MOVE.L    A2,D3
  158.         SUB.L    A3,D3
  159.         MOVE.L    A3,D4
  160.         ADDQ.L    #1,D4
  161.         MOVEA.L    A3,A5
  162.         ADDA.L    D6,A5
  163.         MOVEA.L    A3,A4
  164.         MOVE.W    D5,D0
  165.         ADDQ.W    #1,D0
  166.         ADDA.W    D0,A4
  167. lbC000692    SUBQ.L    #1,D7
  168.         BLT.W    lbC00071A
  169.         MOVEQ    #0,D2
  170.         MOVE.B    (A1)+,D2
  171.         BEQ.S    lbC0006C8
  172.         BGT.S    lbC0006F8
  173.         NEG.B    D2
  174.         SUBQ.L    #1,D7
  175.         BLT.S    lbC00071A
  176.         MOVE.B    (A1)+,D1
  177.         SUBQ.L    #1,D2
  178.         BLT.S    lbC00071A
  179. lbC0006AC    MOVE.B    D1,(A3)
  180.         ADDA.W    D5,A3
  181.         CMPA.L    A5,A3
  182.         BCC.S    lbC0006BA
  183. lbC0006B4    DBRA    D2,lbC0006AC
  184.         BRA.S    lbC000692
  185. lbC0006BA    MOVEA.L    D4,A3
  186.         ADDQ.L    #1,D4
  187.         CMPA.L    D4,A4
  188.         BNE.S    lbC0006B4
  189.         DBRA    D2,lbC00071A
  190.         BRA.S    lbC00071E
  191. lbC0006C8    SUBQ.L    #1,D7
  192.         BLT.S    lbC00071A
  193.         MOVE.B    (A1)+,D2
  194.         MOVEA.L    D3,A2
  195.         ADDA.L    A3,A2
  196.         SUBQ.L    #1,D2
  197.         BLT.S    lbC00071A
  198. lbC0006D6    MOVE.B    (A2),(A3)
  199.         ADDA.W    D5,A3
  200.         CMPA.L    A5,A3
  201.         BCC.S    lbC0006E6
  202.         ADDA.W    D5,A2
  203. lbC0006E0    DBRA    D2,lbC0006D6
  204.         BRA.S    lbC000692
  205. lbC0006E6    MOVEA.L    D4,A3
  206.         ADDQ.L    #1,D4
  207.         MOVEA.L    D3,A2
  208.         ADDA.L    A3,A2
  209.         CMPA.L    D4,A4
  210.         BNE.S    lbC0006E0
  211.         DBRA    D2,lbC00071A
  212.         BRA.S    lbC00071E
  213. lbC0006F8    SUB.L    D2,D7
  214.         BLT.S    lbC00071A
  215.         SUBQ.W    #1,D2
  216. lbC0006FE    MOVE.B    (A1)+,(A3)
  217.         ADDA.W    D5,A3
  218.         CMPA.L    A5,A3
  219.         BCC.S    lbC00070C
  220. lbC000706    DBRA    D2,lbC0006FE
  221.         BRA.S    lbC000692
  222. lbC00070C    MOVEA.L    D4,A3
  223.         ADDQ.L    #1,D4
  224.         CMPA.L    D4,A4
  225.         BNE.S    lbC000706
  226.         DBRA    D2,lbC00071A
  227.         BRA.S    lbC00071E
  228. lbC00071A    MOVEQ    #0,D0
  229.         BRA.S    lbC000720
  230. lbC00071E    MOVE.L    D6,D0
  231. lbC000720    MOVEM.L    (SP)+,D2-D7/A0-A5
  232.         RTS
  233.  
  234.  
  235. * _Method_4 ******************************************************************
  236.  
  237.         XDEF    _Method_4
  238.  
  239. _Method_4    MOVEM.L    D2-D7/A0-A5,-(SP)
  240.         MOVEA.L    D6,A4
  241.         MOVEQ    #0,D5
  242. lbC000832    SUBQ.L    #1,D7
  243.         BLT.W    lbC0008C8
  244.         MOVEQ    #0,D4
  245.         MOVE.B    (A1)+,D3
  246. lbC00083C    BTST    D4,D3
  247.         BNE.S    lbC0008AA
  248.         SUBQ.L    #2,D7
  249.         BLT.W    lbC0008C8
  250.         MOVEQ    #0,D0
  251.         MOVEQ    #0,D2
  252.         MOVE.B    (A1)+,D0
  253.         MOVE.B    (A1)+,D2
  254.         MOVE.L    D2,D1
  255.         ANDI.B    #15,D1
  256.         ADDQ.W    #3,D1
  257.         ASL.W    #4,D2
  258.         CLR.B    D2
  259.         ADD.W    D2,D0
  260.         SUB.L    D1,D7
  261.         BLT.S    lbC0008C4
  262.         CMP.L    D0,D5
  263.         BLT.S    lbC0008C4
  264.         NEG.W    D0
  265.         LEA    0(A3,D0.W),A5
  266.         ADD.L    D1,D5
  267.         ADD.L    D1,D5
  268.         CMP.L    A4,D5
  269.         BGT.S    lbC0008C4
  270.         SUBQ.W    #1,D1
  271. lbC000874    MOVE.B    (A1)+,D0
  272.         MOVE.B    D0,D2
  273.         ASR.B    #4,D2
  274.         MOVE.B    (A5)+,D6
  275.         SUB.B    D2,D6
  276.         MOVE.B    D6,(A3)+
  277.         BTST    #3,D0
  278.         BNE.S    lbC00088C
  279.         ANDI.B    #15,D0
  280.         BRA.S    lbC000890
  281. lbC00088C    ORI.B    #$F0,D0
  282. lbC000890    MOVE.B    (A5)+,D6
  283.         SUB.B    D0,D6
  284.         MOVE.B    D6,(A3)+
  285.         DBRA    D1,lbC000874
  286.         CMP.L    A4,D5
  287.         BEQ.S    lbC0008C8
  288.         CMPI.B    #7,D4
  289.         BEQ.S    lbC000832
  290.         ADDQ.B    #1,D4
  291.         BRA.W    lbC00083C
  292. lbC0008AA    SUBQ.L    #1,D7
  293.         BLT.S    lbC0008C8
  294.         ADDQ.L    #1,D5
  295.         CMP.L    A4,D5
  296.         BGT.S    lbC0008C4
  297.         MOVE.B    (A1)+,(A3)+
  298.         CMPI.B    #7,D4
  299.         BEQ.W    lbC000832
  300.         ADDQ.B    #1,D4
  301.         BRA.W    lbC00083C
  302. lbC0008C4    MOVEQ    #0,D0
  303.         BRA.S    lbC0008CE
  304. lbC0008C8    CMP.L    A4,D5
  305.         BNE.S    lbC0008C4
  306.         MOVE.L    D5,D0
  307. lbC0008CE    MOVEM.L    (SP)+,D2-D7/A0-A5
  308.         RTS
  309.  
  310.  
  311. * _Method_5 ******************************************************************
  312.  
  313.         XDEF    _Method_5
  314.  
  315. _Method_5    MOVEM.L    D3-D7/A0-A5,-(SP)
  316.         SUBQ.L    #3,D7
  317.         BLT.S    lbC00081A
  318.         MOVE.W    (A1)+,D5
  319.         MOVE.B    (A1)+,D3
  320.         MOVE.L    A3,D4
  321.         ADDQ.L    #1,D4
  322.         MOVEA.L    A3,A5
  323.         ADDA.L    D6,A5
  324.         MOVEA.L    A3,A4
  325.         MOVE.W    D5,D0
  326.         ADDQ.W    #1,D0
  327.         ADDA.W    D0,A4
  328. lbC0007D0    SUBQ.L    #1,D7
  329.         BLT.W    lbC00081A
  330.         MOVE.B    (A1)+,D0
  331.         CMP.B    D0,D3
  332.         BEQ.S    lbC0007EE
  333.         MOVE.B    D0,(A3)
  334.         ADDA.W    D5,A3
  335.         CMPA.L    A5,A3
  336.         BCS.S    lbC0007D0
  337.         MOVEA.L    D4,A3
  338.         ADDQ.L    #1,D4
  339.         CMPA.L    D4,A4
  340.         BNE.S    lbC0007D0
  341.         BRA.S    lbC00081E
  342. lbC0007EE    SUBQ.L    #2,D7
  343.         BLT.W    lbC00081A
  344.         MOVEQ    #0,D1
  345.         MOVE.B    (A1)+,D1
  346.         BEQ.S    lbC00081A
  347.         SUBQ.W    #1,D1
  348.         MOVE.B    (A1)+,D0
  349. lbC0007FE    MOVE.B    D0,(A3)
  350.         ADDA.W    D5,A3
  351.         CMPA.L    A5,A3
  352.         BCC.S    lbC00080C
  353. lbC000806    DBRA    D1,lbC0007FE
  354.         BRA.S    lbC0007D0
  355. lbC00080C    MOVEA.L    D4,A3
  356.         ADDQ.L    #1,D4
  357.         CMPA.L    D4,A4
  358.         BNE.S    lbC000806
  359.         DBRA    D1,lbC00081A
  360.         BRA.S    lbC00081E
  361. lbC00081A    MOVEQ    #0,D0
  362.         BRA.S    lbC000824
  363. lbC00081E    TST.L    D7
  364.         BNE.S    lbC00081A
  365.         MOVE.L    D6,D0
  366. lbC000824    MOVEM.L    (SP)+,D3-D7/A0-A5
  367.         RTS
  368.  
  369.  
  370. ******************************************************************************
  371.  
  372.         END
  373.